#ifndef WORKOUT_DATA_HANDLER_H
#define WORKOUT_DATA_HANDLER_H

#include "Workout_new.pb.h"  // 包含生成的 Protobuf 文件
#include <string>

class WorkoutDataHandler {
public:
    // 获取单例实例
    static WorkoutDataHandler& getInstance() {
        static WorkoutDataHandler instance;
        return instance;
    }

    // 禁用拷贝构造和赋值操作
    WorkoutDataHandler(const WorkoutDataHandler&) = delete;
    void operator=(const WorkoutDataHandler&) = delete;

    // 解析 JSON 并更新 WorkoutData
    void parseJsonToWorkoutData(const std::string& jsonStr);

    // 返回当前的 WorkoutData
    const WorkoutData& getWorkoutData() const;

    // 序列化，并返回序列化后的字符串
    std::string serializeWorkoutDataToString();


    bool deserializeWorkoutDataFromString(const std::string& serializedData);

    // 打印 WorkoutData
    void PrintWorkoutData(const WorkoutData& data);

    // 判断 WorkoutData 是否为空
    bool isWorkoutDataEmpty() const {
        return !workoutData.IsInitialized(); // 使用 Protobuf 提供的函数
    }

private:
    // 构造函数私有化，确保只能通过 getInstance() 访问实例
    WorkoutDataHandler();
    
    // Protobuf 定义的数据对象
    WorkoutData workoutData;
};

#endif // WORKOUT_DATA_HANDLER_H
